/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clases;

import entidades.Barrio;
import entidades.Departamento;
import entidades.Entidad;
import entidades.Localidad;
import entidades.Municipio;
import entidades.Pais;
import entidades.Sitio;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import negocio.BarrioInterface;
import negocio.DepartamentoInterface;
import negocio.EntidadInterface;
import negocio.LocalidadInterface;
import negocio.MunicipioInterface;
import negocio.PaisInterface;
import negocio.SitioInterface;

/**
 *
 * @author BATAQUERO
 */
@ManagedBean
@ViewScoped
public class CargueEntidad {
    /*Se debe instanciar la entidad y generar los getters y setters*/

    private Entidad entidad = new Entidad();
    private Sitio sitio = new Sitio();
    private Barrio barrio = new Barrio();
    @EJB
    private EntidadInterface entidadInterface;
    @EJB
    private SitioInterface sitioInterface;
    /* Barrio  */
    @EJB   //352
    private BarrioInterface barrioInterface;
    private String barrioSelected;
    private List<Barrio> listaBarrio;
    /* Pais  */
    @EJB
    private PaisInterface paisInterface;
    private Pais paisSelected;
    private List<Pais> listaPais;
    /*  Departamento  */
    @EJB
    private DepartamentoInterface departamentoInterface;
    private Departamento departamentoSelected;
    private List<Departamento> listaDepartamento;
    /*  Municipio  */
    @EJB
    private MunicipioInterface municipioInterface;
    private Municipio municipioSelected;
    private List<Municipio> listaMunicipios;
    /*  Localidad  */
    @EJB
    private LocalidadInterface localidadInterface;
    private Localidad localidadSelected;
    private List<Localidad> listaLocalidad;

    public CargueEntidad() {
    }

    @PostConstruct
    public void inicializarVariables() {
        paisSelected = new Pais();
        listaPais = paisInterface.listarPaises();
    }

    public void cargarEntidad() {
        try {
            entidad.setIdEntidad(Integer.parseInt(entidad.getNitEntidad().toString()));
            sitio.setIdEntidad(entidad);
            sitio.setIdBarrio(barrioInterface.consultarBarrio(Integer.parseInt(barrioSelected)));
            sitio.setIdSitio(sitioInterface.obtenerMaxId());
            entidadInterface.crear(entidad,sitio);
            FacesMessage facesMessage = new FacesMessage("Guardado con éxito");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            limpiarCampos();
            
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }

    private void limpiarCampos(){
        entidad = null;
        sitio = null;
        paisSelected = null;
        municipioSelected = null;
        localidadSelected = null;
        barrioSelected = "";
        
    }
    
    public void cargarSitio() {
        try {
            entidad.setIdEntidad(entidad.getIdEntidad());
            sitio.setIdEntidad(entidad);
            sitio.setIdBarrio(barrioInterface.consultarBarrio(Integer.parseInt(barrioSelected)));
            sitio.setIdSitio(sitioInterface.obtenerMaxId());
            sitioInterface.crear(sitio);
        } catch (Exception e) {
            FacesMessage facesMessage = new FacesMessage("Error");
            FacesContext.getCurrentInstance().addMessage(null, facesMessage);
            e.printStackTrace();
        }
    }

    public Entidad getEntidad() {
        return entidad;
    }

    public void setEntidad(Entidad entidad) {
        this.entidad = entidad;
    }

    public Sitio getSitio() {
        return sitio;
    }

    public void setSitio(Sitio sitio) {
        this.sitio = sitio;
    }

    public Barrio getBarrio() {
        return barrio;
    }

    public void setBarrio(Barrio barrio) {
        this.barrio = barrio;
    }
    
    public String getBarrioSelected() {
        return barrioSelected;
    }

    public void setBarrioSelected(String barrioSelected) {
        this.barrioSelected = barrioSelected;
    }

    public List<Barrio> getListaBarrio() {
        return listaBarrio;
    }

    public void setListaBarrio(List<Barrio> listaBarrio) {
        this.listaBarrio = listaBarrio;
    }

    public Pais getPaisSelected() {
        return paisSelected;
    }

    public void setPaisSelected(Pais paisSelected) {
        this.paisSelected = paisSelected;
    }

    public List<Pais> getListaPais() {
        return listaPais;
    }

    public void setListaPais(List<Pais> listaPais) {
        this.listaPais = listaPais;
    }

    public Departamento getDepartamentoSelected() {
        return departamentoSelected;
    }

    public void setDepartamentoSelected(Departamento departamentoSelected) {
        this.departamentoSelected = departamentoSelected;
    }

    public List<Departamento> getListaDepartamento() {
        return listaDepartamento;
    }

    public void setListaDepartamento(List<Departamento> listaDepartamento) {
        this.listaDepartamento = listaDepartamento;
    }

    public Municipio getMunicipioSelected() {
        return municipioSelected;
    }

    public void setMunicipioSelected(Municipio municipioSelected) {
        this.municipioSelected = municipioSelected;
    }

    public List<Municipio> getListaMunicipios() {
        return listaMunicipios;
    }

    public void setListaMunicipios(List<Municipio> listaMunicipios) {
        this.listaMunicipios = listaMunicipios;
    }

    public Localidad getLocalidadSelected() {
        return localidadSelected;
    }

    public void setLocalidadSelected(Localidad localidadSelected) {
        this.localidadSelected = localidadSelected;
    }

    public List<Localidad> getListaLocalidad() {
        return listaLocalidad;
    }

    public void setListaLocalidad(List<Localidad> listaLocalidad) {
        this.listaLocalidad = listaLocalidad;
    }
}
